If the underlying X11 input driver creates multiple devices from a single
device node, we may end up picking up the wrong device. So, instead of
picking the first device based on node and bailing out if it's not a pad,
pick the first pad that has that device node, and bail out if there is
none.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/10
Closes: #10
let padDevice = null;
devices.forEach(Lang.bind(this, function(device) {
- if (deviceNode == device.get_device_node())
+ if (deviceNode == device.get_device_node() &&
+ padDevice.get_device_type() == Clutter.InputDeviceType.PAD_DEVICE)
padDevice = device;
}));
- if (padDevice == null ||
- padDevice.get_device_type() != Clutter.InputDeviceType.PAD_DEVICE) {
+ if (padDevice == null) {
invocation.return_error_literal(Gio.IOErrorEnum,
Gio.IOErrorEnum.CANCELLED,
"Invalid params");